import org.junit.jupiter.api.Test;

import java.util.*;


public class _19_删除链表的倒数第N个结点 {


    @Test
    public void test() {

    }

    /**
     * 遍历两遍，第一次遍历获取出链表的长度，第二遍遍历删除指定元素，就是跳过指定的元素
     * @param head
     * @param n
     * @return
     */
    public ListNode removeNthFromEnd(ListNode head, int n) {
        //创建一个链表
        ListNode dummy = new ListNode(0, head);
        int length = getLength(head);
        ListNode cur = dummy;
        //找到当前需要删除数据的前一个位置
        for (int i = 1; i < length-n+1; i++) {
            cur=cur.next;
        }
        //找到要删除数据的下一个数据
        cur.next = cur.next.next;
        ListNode ans = dummy.next;
        return ans;


    }

    public int getLength(ListNode head){
        int length=0;
        while (head.next!=null){
            length++;
            head=head.next;
        }
        return length;
    }
}




